/**
 * lilang
 * WorkCenterService.java
 * 2013-7-12下午2:25:50
 */
package com.cq.oa.service.work;

import java.util.List;
import java.util.Map;

import oa.base.util.Page;

import com.cq.oa.domain.dto.InstanceDto;
import com.cq.oa.domain.dto.TaskCmd;
import com.cq.oa.domain.dto.WorkDto;
import com.cq.oa.domain.wfc.Activity;
import com.cq.oa.domain.wfc.ActivityParticipation;
import com.cq.oa.domain.wfc.ProcessDefinition;
import com.cq.oa.domain.wfc.TaskInstance;

/**
 * 
 * 业务流程处理
 * @author lilang
 * 
 *
 */
public interface WorkCenterService {
	
	/**
	 * 获取流程历史 service
	 * @return
	 * lilang 
	 * 2013-11-1下午11:36:39
	 */
	public ProcessHisManger getProcessHisManger();

	
	public ProcessInstanceService getProcessInstanceService();
	/**
	 * 获取工作流 流程定义
	 * @param sid
	 * @return
	 * lilang 
	 * 2013-10-18下午3:59:11
	 */
	public WorkDto getWorkProcessDefinition(Long sid);
	
	/**
	 * 工作流启动
	 * @param definitionId
	 * @return
	 * lilang 
	 * 2013-10-18下午4:00:09
	 */
	public InstanceDto doStartWork(Long definitionId,String title);
	
	/**
	 * 更新流程信息
	 * @param processId
	 * @param title
	 * @param params
	 * lilang 
	 * 2013-10-27上午11:33:39
	 */
	public void updateProcessInfo(Long processId,String title,Map<String,Object> params);
	
	
	/**
	 * 更新任务消息
	 * @param taskId
	 * @param msg
	 * lilang 
	 * 2013-10-27上午11:34:14
	 */
	public void updateTaskMsg(Long taskId,String msg);
	/**
	 * 完成任务
	 *  @param nextTask     activityId(下一步活动ID)@type(处理类型)@sid(处理ID)@cname(处理名称)
	 * lilang 
	 * 2013-10-26下午3:03:56
	 * @throws Exception 
	 */
	public void doCompleteTask(Long taskId,List<TaskCmd> nextTask,Long activityId) throws Exception;
	
	
	
	/**
	 * 获取可以回退的节点
	 * @param actId
	 * @return
	 * lilang 
	 * 2013-10-18下午4:03:35
	 */
	public List<Activity> getBackActivity(Long taskId);
	
	
	
	/**
	 * 获取下一步骤的节点
	 * @param actId
	 * @return
	 * lilang 
	 * 2013-10-18下午4:03:35
	 */
	public List<Activity> getNextActivity(Long taskId);
	
	/**
	 * 通过业务号获取所有流程完成任务
	 * @param businessId
	 * @return
	 * lilang 
	 * 2013-10-18下午4:05:42
	 */
	public  List<TaskInstance> getAllTaskList(String businessId);
	
	/**
	 * 通过ID 获取 他的处理人
	 * @param activityId
	 * @return
	 * lilang 
	 * 2013-10-26下午3:51:31
	 */
	public List<ActivityParticipation> getActivityParticipation(Long activityId);
	
	
	public List<ProcessDefinition> getProcess();
	
	/**
	 * 查询自己当前任务
	 * @return
	 * lilang 
	 * 2013-10-31上午9:55:20
	 */
	public Page<TaskInstance> findTaskByOwn(Map<String,Object> param,int pageNo,int pageSize);
}
